package client;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;


/** Classe che gestisce il cronometro grafico.
 *
 */
public class Cronometro {
	
	private static JPanel cronframe;
	private static int crontempo;
	private JLabel cronlabeltime;
	private long starttime;
	/** Variabile di tipo timer che permette di settare il cronometro.<br />
	 * E' chiamata anche dalla classe C_GSessioneGioco.
	 *
	 */
	public static Timer crontimer;

    
	/** Costruttore dell'oggetto C_GSessioneGioco.<br />
	 * Si occupa della gestione del cronometro grafico.
	 * 
	 */
	public Cronometro(){

        cronframe = new JPanel();
        cronframe.setSize (170, 100);

        cronlabeltime = new JLabel ("0:00");
        cronlabeltime.setFont (new Font ("SansSerif", Font.BOLD, 20));
        cronlabeltime.setHorizontalAlignment (JLabel.CENTER);
        cronframe.add (cronlabeltime, BorderLayout.CENTER);
        starttime = System.currentTimeMillis() + crontempo;

        crontimer = new Timer (500, new ActionListener () {
        	public void actionPerformed (ActionEvent e) {
            	long diffTime = System.currentTimeMillis () - starttime;

                int seconds = -(int) (diffTime / 1000 % 60);
                int minutes = -(int) (diffTime / 60000 % 60);

                String s = String.format ("%02d:%01d", minutes, seconds);
                if(crontempo==120000)
                	cronlabeltime.setText ("Tempo residuo: "+s);
                else
                	cronlabeltime.setText ("Tempo residuo: "+s);
            }
        		
        });

    }
	
	
	/** Metodo che imposta il cronometro visualizzato nella grafica.
	 * @param tempo Il tempo (millisecondi) dal quale far partire il countdown.
 	 * @param panel Il pannello nel quale disegnare il cronometro.
	 */
	public static void impostaCronometro (int tempo, JPanel panel){
		crontimer.stop();
		crontempo=tempo;	
		panel.remove(cronframe);
		new Cronometro();
		panel.add(cronframe);
		panel.repaint();
		panel.validate();
	}
		
}
